package com.zfast.yugioh.antlr4.effect.impl;

import cn.hutool.core.util.ReflectUtil;
import com.zfast.forge.constant.ExceptionEnum;
import com.zfast.forge.exception.Antlr4Exception;
import com.zfast.yugioh.antlr4.effect.EffectParser;
import com.zfast.yugioh.antlr4.effect.EffectParserBaseVisitor;
import com.zfast.yugioh.bo.GameBo;
import com.zfast.yugioh.constant.Define;
import com.zfast.yugioh.constant.VerifyeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.antlr.v4.runtime.ParserRuleContext;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * limitStr字串处理
 * @author zgn
 * @Description: EffectBaseVisitor
 * @date 2022/7/20 0020
 */
public class EffectBaseVisitorImpl extends EffectParserBaseVisitor{

    EffectBaseListenerImpl effectBaseListener;

    @Override
    public Object visitOrgExpression(EffectParser.OrgExpressionContext ctx) {
        ParserRuleContext parent = ctx.getParent();

        List<EffectParser.OrgExpressionContext> SingleContextList = parent.getRuleContexts(EffectParser.OrgExpressionContext.class);
        List<EffectParser.IfContext> IfContextList = parent.getRuleContexts(EffectParser.IfContext.class);

        for (int i = 0; i < SingleContextList.size(); i++) {
            EffectParser.OrgExpressionContext orgExpressionContext =  SingleContextList.get(i);
            EffectParser.UpdateContext UpdateContext = orgExpressionContext.getRuleContext(EffectParser.UpdateContext.class, 0);
            effectBaseListener.doUpdateParse(UpdateContext);

        }
        for (int i = 0; i < IfContextList.size(); i++) {
            EffectParser.IfContext ifContext =  IfContextList.get(i);
            System.out.println(ifContext.getRuleContext(EffectParser.ExprContext.class,0).getText());
            System.out.println(ifContext.getRuleContext(EffectParser.OrgExpressionContext.class,0).getText());
        }

        return super.visitOrgExpression(ctx);
    }

    /*@Override
    public Object visitOrgExpr(EffectParser.OrgExprContext ctx) {
        ParserRuleContext parent = ctx.getParent();

        List<EffectParser.OrgExpressionContext> SingleContextList = parent.getRuleContexts(EffectParser.OrgExpressionContext.class);
        List<EffectParser.IfContext> IfContextList = parent.getRuleContexts(EffectParser.IfContext.class);

        for (int i = 0; i < SingleContextList.size(); i++) {
            EffectParser.OrgExpressionContext orgExpressionContext =  SingleContextList.get(i);
            EffectParser.UpdateContext UpdateContext = orgExpressionContext.getRuleContext(EffectParser.UpdateContext.class, 0);
            effectBaseListener.enterUpdate(UpdateContext);

        }
        for (int i = 0; i < IfContextList.size(); i++) {
            EffectParser.IfContext ifContext =  IfContextList.get(i);
            System.out.println(ifContext.getRuleContext(EffectParser.ExprContext.class,0).getText());
            System.out.println(ifContext.getRuleContext(EffectParser.OrgExpressionContext.class,0).getText());
        }

        return null;
    }*/
}
